//package com.zmn.plat.admin.controller.oneprice;
//
//import java.util.*;
//import java.util.stream.Collectors;
//
//import com.zmn.common.dto2.ResponseDTO;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.servlet.ModelAndView;
//
//import com.zmn.common.constant.StatusConsts;
//import com.zmn.common.dictionary.GlobalDict;
//import com.zmn.common.dto.LayuiTableResponseDTO;
//import com.zmn.common.dto.ResultDTO;
//import com.zmn.common.dto.VtDTO;
//import com.zmn.common.utils.number.NumberUtil;
//import com.zmn.manager.common.database.annotation.ReadOnlyConnection;
//import com.zmn.plat.manager.dictionary.OnePriceDict;
//import com.zmn.plat.model.entity.channel.Channel;
//import com.zmn.plat.model.entity.oneprice.*;
//
///**
// * 城市配置一口价
// *
// * @author xiangjunming
// * @since 2019 /07/04 11:04:51
// */
//@Controller
//@RequestMapping("/oneprice/city")
//public class ServCityPriceListController extends ChannelPriceBaseController {
//
//    /**
//     * to城市配置
//     *
//     * @return model and view
//     */
//    @RequestMapping(value = "list")
//    public ModelAndView list() {
//        ModelAndView mav = new ModelAndView("oneprice/city/list");
//        mav.addObject("payTypeList", OnePriceDict.getPayTypeList());
//        // mav.addObject("priceDiscountList", OnePriceDict.getPriceDiscountList());
//        mav.addObject("statusList", GlobalDict.getStatusList(false));
//        mav.addObject("provinces", getProvinceList());
//        mav.addObject("typeList", OnePriceDict.getTypeList());
//        return mav;
//    }
//
//    /**
//     * 城市配置查询
//     *
//     * @param query
//     *            the query
//     * @return layui table response dto
//     */
//    @RequestMapping(value = "/ajax/list")
//    @ResponseBody
//    @ReadOnlyConnection
//    public LayuiTableResponseDTO ajaxList(ServCityPriceQuery query) {
//        Integer count = servCityPriceService.countByQuery(query);
//        List<ServCityPrice> items = null;
//        if (count > 0) {
//            items = servCityPriceService.listPageByQuery(query);
//        }
//        return new LayuiTableResponseDTO<>(StatusConsts.STATUS_SUCCESS, "OK", count, items);
//    }
//
//    /**
//     * 描述: 新增配置
//     *
//     * @return modelAndView
//     * @author xiangjunming
//     * @since 2019/11/19 11:10
//     */
//    @RequestMapping(value = "add")
//    public ModelAndView add() {
//        ModelAndView mav = new ModelAndView("oneprice/add");
//        mav.addObject("typeList", OnePriceDict.getTypeList());
//        mav.addObject("type", 2);
//        return mav;
//    }
//
//    /**
//     * to新增/编辑
//     *
//     * @param relationId
//     *            the relation id
//     * @return the model and view
//     */
//    @RequestMapping(value = "toEdit")
//    @ReadOnlyConnection
//    public ModelAndView toEdit(Integer relationId, Integer type) {
//        ModelAndView mav = new ModelAndView("oneprice/city/detail");
//        ServCityPrice byKey = Optional.ofNullable(relationId).map(p -> servCityPriceService.findByKey(p)).orElse(new ServCityPrice() {
//            {
//                setType(type);
//            }
//        });
//        if (Objects.nonNull(byKey.getDeposit())) {
//            String sDeposit = NumberUtil.convertMoneyToYuan(Optional.ofNullable(byKey.getDeposit()).orElse(0));
//            Double aDouble = Double.valueOf(sDeposit);
//            byKey.setDeposit(aDouble.intValue());
//        }
//        List<VtDTO> allServCateg = super.getAllServCategShowName();
//
//        List<ServCityPriceServ> priceServs = servCityPriceServService.listByRelationId(relationId);
//        List<Integer> collect = priceServs.stream().map(ServCityPriceServ::getServCategId).collect(Collectors.toList());
//        List<VtDTO> collect1 = allServCateg.stream().peek(mm -> {
//            if (collect.contains(mm.getValue())) {
//                mm.setStatus(true);
//            }
//        }).collect(Collectors.toList());
//
//        mav.addObject("servCategList", collect1);
//        mav.addObject("depositList", OnePriceDict.getDepositList());
//        mav.addObject("item", byKey);
//        mav.addObject("payTypeList", OnePriceDict.getPayTypeList());
//        // mav.addObject("priceDiscountList", OnePriceDict.getPriceDiscountList());
//        mav.addObject("statusList", GlobalDict.getStatusList(false));
//        mav.addObject("provinces", getProvinceList());
//        mav.addObject("typeList", OnePriceDict.getTypeList());
//        return mav;
//    }
//
//    /**
//     * to详情
//     *
//     * @param relationId
//     *            the relation id
//     * @return model and view
//     */
//    @RequestMapping(value = "detail")
//    @ReadOnlyConnection
//    public ModelAndView detail(Integer relationId, Integer type) {
//        ModelAndView mav = this.toEdit(relationId, type);
//        ServCityPriceLogQuery logQuery = new ServCityPriceLogQuery();
//        logQuery.setRelationId(relationId);
//        List<ServCityPriceLog> logs = logService.listByQuery(logQuery);
//        mav.addObject("isDetail", true);
//        mav.addObject("logs", logs);
//        return mav;
//    }
//
//    /**
//     * 检查城市ID是否已配置
//     *
//     * @param provinceId
//     *            the province id
//     * @param cityId
//     *            the city id
//     * @return result dto
//     */
//    @RequestMapping(value = "checkCity")
//    @ResponseBody
//    @ReadOnlyConnection
//    public ResponseDTO checkCity(@RequestParam(value = "provinceId", defaultValue = "0") Integer provinceId,
//                                 @RequestParam(value = "cityId", defaultValue = "0") Integer cityId, Integer type) {
//        ServCityPriceQuery query = new ServCityPriceQuery();
//        query.setProvinceId(provinceId);
//        query.setType(type);
//        List<ServCityPrice> servCityPrices = servCityPriceService.listByQuery(query);
//        boolean flag = false;
//        String checkMsg = "已在其他配置项中开通，不支持重复选择！";
//        for (ServCityPrice item : servCityPrices) {
//            if (Objects.equals(item.getCityId(), cityId)) {
//                flag = true;
//            } else if (Objects.equals(item.getProvinceId(), provinceId) && item.getCityId() == null) {
//                flag = true;
//                checkMsg = "父级城市已在其他配置项中开通！";
//            } else if (Objects.equals(item.getProvinceId(), provinceId) && cityId == null) {
//                flag = true;
//                checkMsg = "子级城市已在其他配置项中开通！";
//            }
//        }
//        if (flag) {
//            return ResponseDTO.fail(checkMsg);
//        }
//        return ResponseDTO.success(true,"添加成功！");
//    }
//
//    // /**
//    //  * 保存时校验与渠道一口价配置冲突
//    //  *
//    //  * @param vo
//    //  *            the vo
//    //  * @return the list
//    //  */
//    // @RequestMapping(value = "checkConflict")
//    // @ResponseBody
//    // @ReadOnlyConnection
//    // public List<Map<String, String>> checkConflict(@RequestBody ServCityPriceAddEditVO vo) {
//    //     List<Map<String, String>> resp = new ArrayList<>();
//    //     String cityPriceDiscount = OnePriceDict.getPriceDiscount(vo.getPriceDiscount());
//    //
//    //     // 翻译试点类型 1一口价 2计价器(故障维度)
//    //     String typeText = OnePriceDict.getType(vo.getType());
//    //     vo.getCityList().forEach(item -> {
//    //         String[] split = item.split("-");
//    //         Integer provinceId = Integer.valueOf(split[0]);
//    //         Integer cityId = split[1].equals("0") ? null : Integer.valueOf(split[1]);
//    //
//    //         String cityText = cityId == null ? getAreaById(provinceId).getName() : getAreaById(cityId).getName();
//    //         String onePriceCityStr =
//    //             new StringBuilder(cityText).append("-").append("执行" + typeText).append("-").append(cityPriceDiscount).toString();
//    //
//    //         // 查询冲突的渠道试点类型配置
//    //         List<ChannelPrice> channelPriceList = channelPriceService.listByProvinceAndCityIdAndType(provinceId, cityId, vo.getType());
//    //         if (channelPriceList != null && channelPriceList.size() > 0) {
//    //             for (ChannelPrice channelPrice : channelPriceList) {
//    //                 Integer channelPriceId = channelPrice.getChannelPriceId();
//    //
//    //                 // 查询冲突的渠道试点类型配置下的城市
//    //                 List<ChannelPriceCity> channelPriceCityList =
//    //                     channelPriceCityService.listByChannelPriceIdAndProvinceIdAndCityId(channelPriceId, provinceId, cityId);
//    //                 channelPriceCityList.forEach(channelPriceCity -> {
//    //                     String channelCityText =
//    //                         channelPriceCity.getCityName() == null ? channelPriceCity.getProvinceName() : channelPriceCity.getCityName();
//    //
//    //                     // 比对一口价优惠不同的配置
//    //                     String channelCityTypeText = channelPriceCity.getType() == 1 ? "执行" + typeText : "不执行" + typeText;
//    //                     String channelPriceDiscount = OnePriceDict.getPriceDiscount(channelPrice.getPriceDiscount());
//    //                     Channel channel = channelService.findByKey(channelPrice.getChannelId());
//    //                     String channelName = Optional.ofNullable(channel).map(p -> "-" + p.getName()).orElse("");
//    //                     String onePriceChannelStr = new StringBuilder(channelCityText).append(channelName).append("-")
//    //                         .append(channelCityTypeText).append("-").append(channelPriceDiscount).toString();
//    //                     Map<String, String> respMap = new HashMap<>();
//    //                     respMap.put("city", onePriceCityStr);
//    //                     respMap.put("channel", onePriceChannelStr);
//    //                     resp.add(respMap);
//    //                 });
//    //             }
//    //         }
//    //     });
//    //     return resp;
//    // }
//}
